در مقاله "XML در دات نت : ايجاد يک فايل " با نحوه ايجاد يک فايل XML با استفاده از XmlTextWriter آشنا شديم . در اين مقاله به بررسی نحوه خواندن يک فايل XML خواهيم پرداخت .
به منظور دستيابی به محتوای يک سند XML ، می بايست آن را Parse نمود تا به بخش مورد نظر دست يافت . به نرم افزارهائی که امکان انجام چنين عملياتی را فراهم می نمايند ، "پارسر" گفته می شود . پارسرها دارای دو نوع متفاوت می باشند :
-
پارسرهای ( DOM : ( Document Object Model ، يک ساختار درختی از سند XML را در حافظه ايجاد نموده و امکان حرکت بر روی گره ها و يا خصلت های متفاوتی را در اختيار قرار می دهند.
-
پارسرهای ( SAX : ( Simple API for XML ، سندهای XML را به صورت ترتيبی پردازش نموده و نسبت به پارسرهای DOM حافظه بمرابت کمتری را اشغال می نمايند .
در MSXML ver 3.0 ، شرکت مايکروسافت دو پارسر فوق را ارائه نموده است . در دات نت نيز از پارسر DOM که دارای سازگاری و شباهت بسيار زيادی با MSXML است و پارسر SAX که دستخوش تغييرات متعددی نسبت به گذشته شده است ، استفاده می گردد . پارسرهای قبل از دات نت ، (مثلا" پارسر MSXML ) کلاس ها و اينترفيس های متعددی را به منظور انجام عمليات متقاوت بر روی اسناد XML ارائه نموده که با استاندارد پيشنهادی کنسرسيوم وب ، سازگاری و نزديکی قابل توجهی دارد. در دات نت علاوه بر استمرار وضعيت فوق ، روش های ساده و انعطاف پذيری به منظور کار بر روی اسناد XML ارائه شده است .
کلاس XmlTextReader
کلاس XmlTextReader روشی سريع و موثر به منظور parse نمودن اسناد XML را ارائه می نمايد. کلاس فوق از حافظه بطرز کاملا" حساب شده و بهينه ای استفاده می نمايد. صرفا" گره جاری در حافظه نگهداری می گردد ( Cached ) و عنصری که قبلا" parse شده است در حافظه وجود نخواهد داشت . در صورتی که به وجود عناصر قبلی نياز باشد ، می بايست فايل XML مجددا" از ابتدا و به صورت forward-only خوانده شود. کلاس فوق از XmlReader به ارث رسيده و متعلق به System.Xml می باشد .
با استفاده از متدها و خصلت های ارائه شده توسط کلاس فوق، می توان بسادگی به محتوا و عناصر موجود در يک سند XML دست يافت . متدهای ارائه شده همواره گره جاری را برمی گردانند و در ادامه می توان عمليات مورد نظر را بر روی آنان انجام داد .
به منظور استفاده از کلاس XmlTextReader می بايست از System.Xml استفاده و يک نمونه از کلاس فوق را ايجاد نمود .
Dim reader As XmlTextReader |
به منظور خواندن محتوای يک سند XML از متد Read و در يک ساختار تکرار استفاده می نمائيم .
Do while reader.read () |
در صورتی که يک گره با موفقيت خوانده شود، مقدار True برگردانده شده و در ادامه می توان با استفاده از متدها و خصلت های ارائه شده ، عمليات مورد نظر را انجام داد. بررسی نوع يک گره ، دستيابی به خصلت هائی خاص و يا محتوای يک گره نمونه هائی در اين زمينه می باشد .
جدول زير مهمترين متدها و خصلت های کلاس XmlReaderClass را نشان می دهد .
کاربرد |
متد / خصلت |
متد فوق ، cursor را بر روی گره بعدی قرار داده و درصورتی که گره با موفقيت خوانده شود ، مقدار true را بر می گرداند . از متد فوق در يک ساختار تکرار و به منظور خواندن و انجام پردازش های لازم در خصوص اسناد XML استفاده می گردد . |
Read() |
خصلت فوق نوع گره را بر می گرداند ( المان ، متن و يا ساير موارد ). |
NodeType |
خصلت فوق، نام گره جاری را بر می گرداند . |
Name |
خصلت فوق ، محتوای گره را بر می گرداند . |
Value |
محتوای يک گره را بر اساس يک نوع داده خاص برمی گرداند. مثلا" متد ReadString محتوای يک گره را به صورت يک رشته برمی گرداند . |
ReadString(), Readxxxx().... |
متد فوق ، مقدار خصلتی را که به عنوان پارامتر در اختيار آن گذاشته شده است ، برمی گرداند . | GetAttribute("attb_name") |
در صورتی که گره ای دارای يک خصلت باشد، مقدار true و در غيراينصورت مقدار False ، برگردانده می شود . |
HasAttributes |
مثال : استفاده از XmlTextReader به منظور خواندن يک فايل XML
در اين مثال قصد داريم فايل Visitors.xml را که در مقاله "XML در دات نت : ايجاد يک فايل با نحوه ايجاد آن آشنا شديم را خوانده و عناصر موجود در آن را به همراه مقادير نسبت داده شده به هر يک در خروجی نمايش دهيم .
محتوای فايل Visitors.xml |
|
مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر
<%@ Import Namespace="System.Xml" %> |
مرحله دوم : پس از ذخيره کد فوق در فايلی با نام ReadXmlFile.aspx و اجرای آن ، خروجی زير نمايش داده می شود .
نظرات شما عزیزان: